#!/bin/bash

# >> /home/liwei/before_install.log 2>&1

echo "before_install开始执行" 

# 判断是否为 Kylin v10 或更高版本
is_kylin_v10_or_above() {
    # 检查是否存在麒麟系统的标识文件
    if [ ! -f "/etc/os-release" ]; then
        return 1  # 非麒麟系统
    fi

    # 解析系统信息
    source /etc/os-release
    OS_ID=$(echo "$ID" | tr '[:upper:]' '[:lower:]') #转小写

    echo "当前系统为: $ID $VERSION_ID"
 
    if [[ "$OS_ID" != "kylin" ]]; then
        return 1  # 非麒麟系统
    fi

    # 提取主版本号,去除字母并提取数字（如 "VERSION_ID=V10" -> 10）
    local major_version=$(echo "$VERSION_ID" | tr -cd '0-9')

    # 检查版本号是否 >=10
    if [ "$major_version" -ge 10 ] 2>/dev/null; then
        return 0  # 是 Kylin v10 或更高
    else
        return 1  # 版本低于 v10
    fi
}

# 调用函数并输出结果
if is_kylin_v10_or_above; then
    echo -e "\033[32m✅ 系统符合要求\033[0m"
else
    echo -e "\033[31m❌ 本应用仅支持部分linux发行版： Kylin v10 或更高版本，当前系统不在官方支持列表中\033[0m"
    exit 1   # 退出状态码1表示错误
fi

current_pid=$$
install_method="unknown"

while [ $current_pid -ne 1 ]; do
    cmdline=$(cat /proc/$current_pid/cmdline | tr '\0' ' ' 2>/dev/null)
 
    case "$cmdline" in
        *sudo*apt*)
            install_method="apt"
            break
            ;;
        *sudo*dpkg*)
            install_method="dpkg"
            break
            ;;
        *)
            current_pid=$(ps -o ppid= -p $current_pid | tr -d ' ')
            ;;
    esac
done

if [ "$install_method" = "apt" ]; then
    echo "检测到通过 apt 命令行安装" 
elif [ "$install_method" = "dpkg" ]; then
    echo "检测到通过 dpkg 命令行安装"  
else 
    echo "未知安装方式，非交互模式自动继续安装" 
    exit 0
fi

# 后续安装前操作...
has_issue=0
 
# 检测CPU核心数
cpu_cores=$(grep -c '^processor' /proc/cpuinfo)
if [ "$cpu_cores" -ge 4 ]; then
    echo -e "\033[32m✅ CPU核心数符合要求\033[0m"
else
    echo -e "\033[33m⚠ 建议CPU核心≥4（当前：$cpu_cores）\033[0m"
    has_issue=1
fi

# 检测内存
mem_total_kb=$(grep MemTotal /proc/meminfo | awk '{print $2}')
required_mem_kb=$((16 * 1024 * 1024))  # 16GB转换为KB
if [ "$mem_total_kb" -ge "$required_mem_kb" ]; then
    echo -e "\033[32m✅ 内存符合要求\033[0m"
else
    mem_total_gb=$(awk -v mem_kb="$mem_total_kb" 'BEGIN {printf "%.1f", mem_kb / 1024 / 1024}')
    echo -e "\033[33m⚠ 建议内存≥16GB（当前：${mem_total_gb}GB）\033[0m"
    has_issue=1
fi

# 检测磁盘大小
disk_size_kb=$(df -k / | awk 'NR==2 {print $2}')
required_disk_kb=$((100 * 1024 * 1024))  # 100GB转换为KB
if [ "$disk_size_kb" -ge "$required_disk_kb" ]; then
    echo -e "\033[32m✅ 磁盘大小符合要求\033[0m"
else
    disk_size_gb=$(awk -v disk_kb="$disk_size_kb" 'BEGIN {printf "%.1f", disk_kb / 1024 / 1024}')
    echo -e "\033[33m⚠ 建议磁盘≥100GB（当前：${disk_size_gb}GB）\033[0m"
    has_issue=1
fi

# 根据交互模式处理不符合项
if [ "$has_issue" -ne 0 ]; then
    # 交互模式：询问用户
    while true; do
        read -p "是否继续安装？(y/n) " choice
        case "$choice" in
            [Yy]* ) echo "继续安装..."; break;;
            [Nn]* ) echo "退出安装"; exit 1;;
            * ) echo "请输入 y 或 n";;
        esac
    done
fi

echo "继续执行后续安装步骤..."
exit 0






